#ifndef CHARACTER_H
#define CHARACTER_H


// Generic Character class
class Character {
	// Attributes ------------------------------------------------------------------------------
protected:

	Entity *mEntity; // Character entity
	
	SceneManager *mSceneMgr;
public:	
	SceneNode *mMainNode; // Main character node
	SceneNode *mSightNode; // "Sight" node - The character is supposed to be looking here
	SceneNode *mCameraNode; // Node for the chase camera
	// Methods ---------------------------------------------------------------------------------
protected:
public:
	// Updates the character (movement...)
	virtual void update (Real elapsedTime, OIS::Keyboard *KeyboardInput, OIS::Mouse *MouseInput, RenderWindow *win) = 0;
	// The three methods below returns the two camera-related nodes, 
	// and the current position of the character (for the 1st person camera)
	
	SceneNode *getSightNode () {
		return mSightNode;
	}
	
	SceneNode *getCameraNode () {
		return mCameraNode;
	}
	
	Vector3 getWorldPosition () {
		return mMainNode->getWorldPosition();
	}

	Quaternion getWorldOrientation () {
		return mMainNode->getWorldOrientation();
	}

};

#endif